package emuLoader.biz;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import nayasis.common.model.NData;
import nayasis.common.model.NMultiData;
import nayasis.common.util.FileUtil;
import nayasis.common.util.StringUtil;

public class FileData {
	
	/**
	 * 롬 목록을 검사한다.
	 * 
	 * @param searchPath
	 * @param fileNameFilter
	 * @param scanDepth
	 * @return [ {dir, file, fileCnt, path} ]
	 * @throws IOException
	 */
	public NMultiData getRomPath( String searchPath, String fileNameFilter, int scanDepth ) throws IOException {

		// 파일명 필터조건을 세팅한다.
		
		List<String> matchingPattern = new ArrayList<String>();

		if( ! StringUtil.isEmpty(fileNameFilter) ) {

			StringTokenizer token = new StringTokenizer( fileNameFilter, ";" );
			
			while( token.hasMoreTokens() ) {
				matchingPattern.add( token.nextToken() );
			}
			
		}
		
		// 파일검색을 한다.
		List<Path> list = FileUtil.getList( searchPath, true, false, scanDepth, matchingPattern.toArray( new String[] {} ) );
		
		// 화면에 넘겨줄 데이터를 세팅한다.
		NMultiData result = new NMultiData();

		for( Path path : list ) {
			
			NData row = new NData();
			
			String dir      = Files.isDirectory( path ) ? path.toString() : path.getParent().toString();
			String fileName = Files.isDirectory( path ) ? "" : path.getFileName().toString();

			row.put( "dir",  dir      );
			row.put( "file", fileName );
			row.put( "path", path     );

			result.add( row );
			
		}
		
		return result;
		
	}


	
}
